package com.ynkbny.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ynkbny.base.PageResult;
import com.ynkbny.domain.DataCodeAnalyzeMapping;
import com.ynkbny.domain.dto.DataCodeAnalyzeMappingDTO;
import com.ynkbny.domain.dto.TEpDataCollectConfigureDTO;
import com.ynkbny.domain.dto.TEpTotalEnergyDTO;

import java.util.List;
import java.util.Map;

/**
 * @author 杨亚
 * @version 1.0.0
 * @title 针对表【datacode_analyze_mapping】的数据库操作Service
 * @description 针对表【datacode_analyze_mapping】的数据库操作Service
 * @create 2023-11-20 17:08:31
 **/
public interface DatacodeAnalyzeMappingService extends IService<DataCodeAnalyzeMapping> {

    /**
     * @param queryWrapper 高级查询参数
     * @param pageNum      *页
     * @param pageSize     第*页
     * @return 分页信息
     */
    PageResult<DataCodeAnalyzeMapping> pageList(String queryWrapper, int pageNum, int pageSize);

    /**
     * 根据id查询
     *
     * @param id 采集配置项id
     * @return DataCodeAnalyzeMappingDTO
     */
    DataCodeAnalyzeMappingDTO findById(String id);

    /**
     * 根据社会信用代码查询
     *
     * @param codeList 社会信用代码list
     * @return List<DataCodeAnalyzeMapping>
     */
    List<DataCodeAnalyzeMapping> selectByCode(List<String> codeList);

    /**
     * 获取数值
     *
     * @param jsonObject  json对象
     * @param analyzeName 分析项名称
     * @return 数值
     */
    Double getValue(JSONObject jsonObject, String analyzeName);

    /**
     * 获取map
     *
     * @return map
     */
    Map<String, Double> getDataMap(List<DataCodeAnalyzeMapping> list);

    /**
     * 根据map和配置项列表构建上传数据
     *
     * @param dataMap          map
     * @param configureDTOList 配置项列表
     * @return 上传数据列表
     */
    List<TEpTotalEnergyDTO> buildUploadData(Map<String, Double> dataMap, List<TEpDataCollectConfigureDTO> configureDTOList);
}
